package cn.six1943.deepchat.module.ai.util;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;

@Slf4j
public class SseUtil {

    public static SseEmitter getConn(String id) {
        // 设置连接超时时间，需要配合配置项 spring.mvc.async.request-timeout: 600000 一起使用
        SseEmitter emitter = new SseEmitter(600_000L);
        // 注册超时回调，超时后触发
        emitter.onTimeout(() -> {
            log.info("连接已超时，正准备关闭，sessionId = {}", id);
        });
        // 注册完成回调，调用 emitter.complete() 触发
        emitter.onCompletion(() -> {
            log.info("连接已关闭，正准备释放，sessionId = {}", id);
            log.info("连接已释放，sessionId = {}", id);
        });
        // 注册异常回调，调用 emitter.completeWithError() 触发
        emitter.onError(throwable -> {
            log.error("连接已异常，正准备关闭，sessionId = {}", id, throwable);
        });
        return emitter;
    }
}
